import request from '@/utils/request'
import type { BaseResponse, PaginationResponse } from '@/types/common/response'
import type {
  User,
  UserListItem,
  CreateUserRequest,
  UpdateUserRequest,
  UpdateUserStatusRequest,
  UserListRequest,
  UserDetailResponse
} from '@/types/api/user'

/**
 * 系统用户管理相关API
 */
export const userApi = {
  /**
   * 获取用户列表
   * @param params 查询参数
   */
  getUserList(params: UserListRequest) {
    return request.get<BaseResponse<PaginationResponse<UserListItem>>>('/users', { params })
  },

  /**
   * 获取用户详情
   * @param id 用户ID
   */
  getUserDetail(id: number) {
    return request.get<BaseResponse<UserDetailResponse>>(`/users/${id}`)
  },

  /**
   * 创建用户
   * @param data 用户信息
   */
  createUser(data: CreateUserRequest) {
    return request.post<BaseResponse<null>>('/users', data)
  },

  /**
   * 更新用户信息
   * @param id 用户ID
   * @param data 用户信息
   */
  updateUser(id: number, data: UpdateUserRequest) {
    return request.put<BaseResponse<null>>(`/users/${id}`, data)
  },

  /**
   * 更新用户状态（启用/禁用）
   * @param id 用户ID
   * @param data 状态信息
   */
  updateUserStatus(id: number, data: UpdateUserStatusRequest) {
    return request.put<BaseResponse<null>>(`/users/${id}/status`, data)
  },

  /**
   * 更新用户角色
   * @param id 用户ID
   * @param data 角色信息
   */
  updateUserRole(id: number, data: { roleId: number }) {
    return request.put<BaseResponse<null>>(`/users/${id}/role`, data)
  },

  /**
   * 删除用户
   * @param id 用户ID
   */
  deleteUser(id: number) {
    return request.delete<BaseResponse<null>>(`/users/${id}`)
  }
}
